package tests;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.util.List;

import static org.openqa.selenium.support.ui.ExpectedConditions.*;

public class TestWebMail{
    WebDriver driver;

    @Before
    public void setUP() {
        driver = new ChromeDriver();
        driver.get("http://demos.telerik.com/aspnet-ajax/webmail/default.aspx");
    }

    @After
    public void tearDown(){
        driver.quit();
    }

    @Test
    /**
     * Тестовый прогон папок внутри Inbox
     */
    public void testSurfTheFolders(){
        WebDriverWait wait = new WebDriverWait(driver, 10);
        // Поиск папки Inbox
        WebElement inbox_folder = wait.until(elementToBeClickable(By.xpath("(//*[@class='rtIn'])[text()='Inbox']")));

        // Поиск влженных папок
        List<WebElement> folders = wait.until(visibilityOfAllElementsLocatedBy(By.xpath("//*//li[3]//li//span[2]")));

        // Добавление "элемента" папка Inbox в список папок
        // для "прощелкивания"
        folders.add(0, inbox_folder);

        // "Прощелкивание" папок
        for (WebElement element : folders){
            // Ожидание пока можно кликнуть
            wait.until(elementToBeClickable(element));

            // Поиск элемента (письма), которое при переходе на
            // новую вкладку будет недоступно
            WebElement temp_element = wait.until(presenceOfElementLocated(By.xpath("//*[@class='rgRow rgSelectedRow']")));
            element.click();


            // Ждем пока элемент не будет доступен старый
            wait.until(stalenessOf(temp_element));

            // Ожидание загрузки новой порции писем на новой вкладке
            wait.until(presenceOfElementLocated(By.xpath("//*[@class='rgRow rgSelectedRow']")));
        }
    }
}
